package com.kx.user.service;

import com.kx.base.vo.UserVO;
import com.kx.user.dto.SignUpDTO;
import com.kx.user.pojo.User;

import java.util.List;

/**
 * @Author Sun
 * @Date 2021/7/16 17:41
 */
public interface UserService {
    /**
     * 判断用户的账户是否被锁定，如果账户被锁定返回null
     *
     * @param signName 登录名
     * @return 对应的用户实体
     */
    User isLocked(String signName);

    /**
     * 用户的的登录的方法，如果登录失败返回null
     *
     * @param signName 登录名
     * @param password 密码
     * @return 对应的用户实体
     */
    User signIn(String signName, String password);

    /**
     * 用户注册的方法
     *
     * @param signUpDTO 用户填写的表单信息
     * @return 返回数据库的执行结果
     */
    int signUp(SignUpDTO signUpDTO);

    /**
     * 验证数据是否已经存在的方法
     * 待验证信息可以是 用户名、手机号、邮箱地址
     *
     * @param info 待查验的信息
     * @param type 1 用户名
     *             2 手机号
     *             3 电子邮件
     */
    int selectInfo(String info, Integer type);


    /**
     * 自动的登录的接口
     *
     * @param phone 手机号
     * @return 返回用户实体对象
     */
    User oneKeySignIn(String phone);

    /**
     * 根据用户id获取用户信息
     *
     * @param userId 用户id
     * @return
     */
    User searchUserById(Long userId);

    /**
     * 优化Sql,不能使用in，使用union
     * 根据多个用户id获取多个用户信息
     * @param userIds 用户的一组id
     * @return
     */
    List<UserVO> searchUserByIds(List<Long> userIds);

    /**
     * 将头像信息保存到数据库中
     *
     * @param userId   用户id
     * @param iconLink 头像路径
     * @return
     */
    int updateIconLinkById(Long userId, String iconLink);
}

